Database Tutorials MySQL থেকে File এবং Image Retrieve করা গাইড ও নোট

289

পিএইচপি এবং মাইএসকিউএল ব্যবহার করে ডেটাবেস থেকে ফাইল এবং ইমেজ রিট্রিভ করা একটি সাধারণ কিন্তু কার্যকরী প্রক্রিয়া। এই পদ্ধতি মূলত ডেটাবেসে ফাইল এবং ইমেজ সংরক্ষণ করার জন্য ব্যবহৃত হয় এবং পরে সেগুলি অ্যাপ্লিকেশনে রিট্রিভ করা হয়। এতে করে ফাইলের ডেটা একত্রিত রাখা এবং সহজে এক্সেস করা সম্ভব হয়।

MySQL এ ফাইল এবং ইমেজ সংরক্ষণ

প্রথমে, ফাইল এবং ইমেজ ডেটাবেসে সংরক্ষণ করা হয়। পিএইচপি ফর্ম ব্যবহার করে এই ফাইল বা ইমেজ আপলোড করা যেতে পারে এবং তারপর ডেটাবেসে সংরক্ষণ করা হয়।

ফাইল এবং ইমেজ সংরক্ষণের জন্য MySQL টেবিলের উদাহরণ:

CREATE TABLE files (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    file_data LONGBLOB,
    file_type VARCHAR(50)
);

এখানে file_data কলামে ফাইল বা ইমেজের বাইনারি ডেটা সংরক্ষণ করা হবে এবং file_type কলামে ফাইলের টাইপ (যেমন, image/jpeg, application/pdf) সংরক্ষিত থাকবে।


পিএইচপি দিয়ে ফাইল এবং ইমেজ ডেটাবেসে আপলোড করা

ফাইল এবং ইমেজ আপলোড করতে প্রথমে পিএইচপি ফর্ম তৈরি করতে হবে। নিচে একটি উদাহরণ দেওয়া হলো:

<?php
// ডেটাবেস সংযোগ
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

// ফাইল আপলোড
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["file"])) {
    $file = $_FILES["file"];
    $file_name = $file["name"];
    $file_tmp_name = $file["tmp_name"];
    $file_type = $file["type"];

    // ফাইলের কনটেন্ট পড়ুন
    $file_data = file_get_contents($file_tmp_name);

    // ডেটাবেসে ইনসার্ট
    $sql = "INSERT INTO files (name, file_data, file_type) VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("sss", $file_name, $file_data, $file_type);
    
    if ($stmt->execute()) {
        echo "File uploaded successfully!";
    } else {
        echo "Error uploading file: " . $conn->error;
    }
    
    $stmt->close();
}

$conn->close();
?>

<form method="POST" enctype="multipart/form-data">
    <label for="file">Choose a file:</label>
    <input type="file" name="file" id="file" required>
    <button type="submit">Upload</button>
</form>

এখানে, ফাইলটি আপলোড হয়ে file_data কলামে বাইনারি আকারে ডেটাবেসে সংরক্ষিত হবে।


MySQL থেকে ফাইল বা ইমেজ রিট্রিভ করা

ফাইল বা ইমেজ ডেটাবেস থেকে রিট্রিভ করার জন্য পিএইচপি কোডে বাইনারি ডেটা ফেচ করা হয় এবং এটি যথাযথভাবে ব্যবহারকারীকে প্রদান করা হয়।

<?php
// ডেটাবেস সংযোগ
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

// ফাইল রিট্রিভ
if (isset($_GET['file_id'])) {
    $file_id = $_GET['file_id'];

    // ডেটাবেস থেকে ফাইল ফেচ
    $sql = "SELECT name, file_data, file_type FROM files WHERE id = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("i", $file_id);
    $stmt->execute();
    $stmt->store_result();
    $stmt->bind_result($file_name, $file_data, $file_type);

    if ($stmt->fetch()) {
        // হেডার সেট করা, যাতে ব্রাউজার ফাইল সঠিকভাবে হ্যান্ডেল করে
        header("Content-Type: " . $file_type);
        header("Content-Disposition: inline; filename=" . $file_name);
        echo $file_data;  // ফাইল ডেটা ব্রাউজারে পাঠানো হচ্ছে
    } else {
        echo "File not found!";
    }

    $stmt->close();
}

$conn->close();
?>

এখানে, ফাইলের ID এর মাধ্যমে ডেটাবেস থেকে ফাইলটি রিট্রিভ করা হয়। যদি এটি একটি ইমেজ হয়, তবে সেটি ইমেজ হিসাবে প্রদর্শিত হবে, এবং যদি এটি অন্য কোনো ফাইল হয়, তবে সেটি ডাউনলোড করা যাবে।


সারাংশ

পিএইচপি এবং মাইএসকিউএল ব্যবহার করে ফাইল এবং ইমেজ ডেটাবেসে সংরক্ষণ এবং রিট্রিভ করা সম্ভব। প্রথমে, ফাইল বা ইমেজকে বাইনারি ফরম্যাটে ডেটাবেসে সংরক্ষণ করতে হবে। পরবর্তীতে, ফাইলের ID ব্যবহার করে সেটি ডেটাবেস থেকে রিট্রিভ করে ব্যবহারকারীকে প্রদর্শন বা ডাউনলোড করা যায়। এটি একটি কার্যকরী পদ্ধতি, বিশেষ করে যখন ফাইল বা ইমেজ সার্ভারে সরাসরি সংরক্ষণ করা সম্ভব না হয় বা সেগুলি ডেটাবেসে একত্রিত রাখার প্রয়োজন হয়।

Content added By
Promotion

Are you sure to start over?

Loading...